package gyb.rasa.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import gyb.rasa.entity.RasaMsg;
import gyb.rasa.entity.RasaResponse;
import gyb.rasa.entity.User;
import com.baomidou.mybatisplus.extension.service.IService;
import gyb.rasa.entity.vo.ChatAIRequest;
import gyb.rasa.entity.vo.GPT35Request;
import gyb.rasa.entity.vo.GPT3Request;

import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.Map;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author 郜宇博
 * @since 2023-04-02
 */
public interface UserService extends IService<User> {

    /**
     * 注册
     * @param user 用户信息
     */
    void register(User user);

    /**
     * 登录
     * @param user 用户信息
     * @return token
     */
    String login(User user);

    /**
     * 通过token获取用户信息
     * @param request http请求
     * @return User对象
     */
    User getUserByToken(HttpServletRequest request);

    /**
     * 与rasa对话
     * @param rasaMsg
     * @return
     */
    ArrayList<RasaResponse> rasaChat(RasaMsg rasaMsg);
    ArrayList<Map<String,String>> rasaChat2(RasaMsg rasaMsg);

    /**
     * GPT35对话
     * @param gpt35Request 请求
     * @return map
     */
    Map<String, Object> chatGpt35(GPT35Request gpt35Request);

    /**
     * GPT3对话
     * @param gpt3Request 请求
     * @return map
     */
    Map<String, Object> chatGpt3(GPT3Request gpt3Request);

    /**
     * ChatAI
     * @param chatAIRequest 请求
     * @return map
     */
    Map<String, Object> ChatAI(ChatAIRequest chatAIRequest);

    /**
     * 获取所有user
     * @param current 当前页
     * @param limit 最大数量
     * @return userList
     */
    IPage<User> getUserByPage(Long current, Long limit);
}
